﻿using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using DevExpress.XtraCharts;
using DevExpress.XtraEditors;
using NLog;

namespace QuanLyKhachSan
{
    public partial class TabDoanhThu : XtraUserControl, IGeneatetabName
    {
        private ChartControl chart;
        private static Logger _logger = LogManager.GetCurrentClassLogger();

        public TabDoanhThu()
        {
            InitializeComponent();
        }

        public string Getname()
        {
            return "Thống kê doanh thu";
        }

        private ChartControl CreateChart(String title)
        {
            splitContainerControl1.Panel2.Controls.Remove(chart);
            var sideChart = new ChartControl();

            chart = sideChart;
            sideChart.Legend.Visible = false;

            var chartTitle1 = new ChartTitle { Text = title };
            sideChart.Titles.Add(chartTitle1);

            sideChart.Dock = DockStyle.Fill;
            splitContainerControl1.Panel2.Controls.Add(sideChart);
            return chart;
        }

        private void btnThongKeTheoThang_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            ChartControl sideBySideBarChart = CreateChart("DOANH THU THEO THÁNG");
            _logger.Info(Commons.ToString() + ", Chọn thao tác thống kê doanh thu theo tháng");

            // Duyệt qua các tháng đồng thời tính doanh thu của mỗi tháng
            var series1 = new Series("Side-by-Side Bar Series 1", ViewType.Bar);
            for (int i = 1; i < 13; i++)
            {
                try
                {
                    decimal tongTien = ThongKeManager.TinhDoanhThuTheoThang(i);
                    series1.Points.Add(new SeriesPoint("Tháng " + i, tongTien));
                }
                catch (Exception ex)
                {
                    XtraMessageBox.Show(ex.Message);
                    break;
                }
            }
            sideBySideBarChart.Series.Add(series1);
        }

        private void btnTheoNam_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            ChartControl sideBySideBarChart = CreateChart("DOANH THU THEO NĂM");
            _logger.Info(Commons.ToString() + ", Chọn thao tác thống kê doanh thu theo năm");

            var series1 = new Series("Side-by-Side Bar Series 1", ViewType.Bar);
            int crYear = DateTime.Now.Year;
            for (int i = crYear - 5; i <= crYear; i++)
            {
                series1.Points.Add(new SeriesPoint("Năm " + i, ThongKeManager.TinhDoanhThuTheoNam(i)));

            }
            // Thêm Series vừa tạo vào chart
            sideBySideBarChart.Series.Add(series1);
        }

        private void btnThongKeTheoQuy_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            ChartControl sideBySideBarChart = CreateChart("DOANH THU THEO QÚY");
            _logger.Info(Commons.ToString() + ", Chọn thao tác thống kê doanh thu theo quý");

            // Duyệt qua các tháng đồng thời tính doanh thu của mỗi tháng
            var series1 = new Series("Side-by-Side Bar Series 1", ViewType.Bar);
            series1.Points.Add(new SeriesPoint("Qúy I", ThongKeManager.TinhDoanhThuTheoQuy(3)));
            series1.Points.Add(new SeriesPoint("Qúy II", ThongKeManager.TinhDoanhThuTheoQuy(6)));
            series1.Points.Add(new SeriesPoint("Qúy III", ThongKeManager.TinhDoanhThuTheoQuy(9)));
            series1.Points.Add(new SeriesPoint("Qúy IV", ThongKeManager.TinhDoanhThuTheoQuy(12)));
            // Thêm Series vừa tạo vào chart
            sideBySideBarChart.Series.Add(series1);
        }

        private void ShowChartPreview(ChartControl temp)
        {
            if (!temp.IsPrintingAvailable)
            {
                MessageBox.Show("Không tìm thấy", "Error");
                return;
            }
            temp.ShowPrintPreview();
        }

        private void PrintChart(ChartControl temp)
        {
            if (!temp.IsPrintingAvailable)
            {
                MessageBox.Show("Không tìm thấy", "Error");
                return;
            }
            temp.Print();
        }

        private void barExport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                //Xuất ra file excel
                var sv = new SaveFileDialog();
                sv.Filter = "Format(*.xls)|*.xls";
                sv.ShowDialog();

                var xlsStream = new FileStream(sv.FileName, FileMode.Create);
                chart.ExportToXls(xlsStream);

                var rs = XtraMessageBox.Show("Bạn có muốn mở file vừa save?", "Questions", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
               
                if (rs ==DialogResult.Yes)
                {
                    Process.Start(@sv.FileName);
                }

                xlsStream.Close();
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message);}
        }
    }
}
